home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / VISCAFE.BIN / ImageViewer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-06-19  |  6.7 KB  |  284 lines

  1. package symantec.itools.db.awt;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Canvas;
  5. import java.awt.Component;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8. import java.awt.MediaTracker;
  9. import java.awt.Toolkit;
  10. import java.io.BufferedInputStream;
  11. import java.io.ByteArrayInputStream;
  12. import java.io.ByteArrayOutputStream;
  13. import java.io.IOException;
  14. import java.io.InputStream;
  15. import java.net.MalformedURLException;
  16. import java.net.URL;
  17. import symantec.itools.db.pro.ProjBinder;
  18. import symantec.itools.db.pro.ProjLink;
  19. import symantec.itools.db.pro.RelationView;
  20. import symjava.sql.SQLException;
  21.  
  22. public class ImageViewer extends Canvas implements ProjLink {
  23.    Image image;
  24.    ProjBinder m_ProjBinder;
  25.    int imageType = 1;
  26.    private boolean m_DynamicUpdate = true;
  27.    private InputStream m_ScreenInputStream;
  28.    private InputStream m_BinderInputStream;
  29.    private boolean m_displayWhileLoading = false;
  30.    private boolean m_BinderDetermines = true;
  31.    private int m_treatBlankAs;
  32.    private boolean isLoaded = false;
  33.    private byte[] coreImage;
  34.  
  35.    public ImageViewer() {
  36.    }
  37.  
  38.    public ImageViewer(URL var1) {
  39.       StreamImageSource.setBaseUrl(var1);
  40.    }
  41.  
  42.    public static void setBaseUrl(URL var0) {
  43.       StreamImageSource.setBaseUrl(var0);
  44.    }
  45.  
  46.    public void addNotify() {
  47.       super.addNotify();
  48.       Object var1 = null;
  49.       Object var2 = null;
  50.  
  51.       for(var3 = ((Component)this).getParent(); var3 != null && ((Component)var3).getParent() != null && !(var3 instanceof Applet); var3 = ((Component)var3).getParent()) {
  52.       }
  53.  
  54.       if (var3 instanceof Applet) {
  55.          Applet var4 = (Applet)var3;
  56.          StreamImageSource.setBaseUrl(var4.getCodeBase());
  57.       }
  58.  
  59.    }
  60.  
  61.    public int getImageType() {
  62.       return this.imageType;
  63.    }
  64.  
  65.    public boolean isLoaded() {
  66.       return this.isLoaded;
  67.    }
  68.  
  69.    public ByteArrayInputStream fetchImage(String var1) throws MalformedURLException {
  70.       this.isLoaded = false;
  71.       this.imageType = 1;
  72.       URL var3 = new URL(var1);
  73.       ByteArrayInputStream var2 = this.fetchImage(var3);
  74.       if (this.m_ProjBinder != null) {
  75.          this.notifyInputChanged(var2);
  76.       }
  77.  
  78.       var2.reset();
  79.       return var2;
  80.    }
  81.  
  82.    public ByteArrayInputStream fetchHTTP(URL var1) throws MalformedURLException {
  83.       try {
  84.          InputStream var2 = var1.openStream();
  85.          BufferedInputStream var3 = new BufferedInputStream(var2);
  86.          ByteArrayOutputStream var4 = new ByteArrayOutputStream();
  87.  
  88.          int var5;
  89.          while((var5 = var3.read()) != -1) {
  90.             var4.write(var5);
  91.          }
  92.  
  93.          this.coreImage = var4.toByteArray();
  94.       } catch (Exception var6) {
  95.          ((Throwable)var6).printStackTrace();
  96.          throw new MalformedURLException(((Throwable)var6).getMessage());
  97.       }
  98.  
  99.       this.isLoaded = true;
  100.       return new ByteArrayInputStream(this.coreImage);
  101.    }
  102.  
  103.    public ByteArrayInputStream fetchImage(URL var1) throws MalformedURLException {
  104.       byte[] var5 = new byte[3];
  105.       this.isLoaded = false;
  106.       String var2 = var1.toExternalForm();
  107.       ByteArrayInputStream var3 = this.fetchHTTP(var1);
  108.       System.arraycopy(this.coreImage, 0, var5, 0, 3);
  109.       String var4 = new String(var5, 0);
  110.       if (var4.equals("GIF")) {
  111.          this.imageType = 0;
  112.       }
  113.  
  114.       this.buildImage(var3, this.imageType);
  115.       ((Component)this).repaint();
  116.       var3.reset();
  117.       return var3;
  118.    }
  119.  
  120.    public void setBinding(RelationView var1, String var2) {
  121.       try {
  122.          int var3 = var1.findProjByName(var2);
  123.          var1.bindProj(var3, this);
  124.       } catch (SQLException var4) {
  125.          System.out.println(((Throwable)var4).getMessage());
  126.       }
  127.    }
  128.  
  129.    public void setDisplayOption(boolean var1) {
  130.       if (var1) {
  131.          this.m_displayWhileLoading = true;
  132.       } else {
  133.          this.m_displayWhileLoading = false;
  134.       }
  135.    }
  136.  
  137.    public void setImageType(int var1) {
  138.       this.imageType = var1;
  139.    }
  140.  
  141.    public void init(ProjBinder var1) {
  142.       this.m_ProjBinder = var1;
  143.       this.init();
  144.    }
  145.  
  146.    public void init() {
  147.       byte var2 = 1;
  148.       this.image = null;
  149.       this.m_BinderInputStream = null;
  150.  
  151.       try {
  152.          if (this.m_ProjBinder.getRelationView().getCurrentRecordState() != 105 && this.m_ProjBinder != null && this.m_ProjBinder.isReadable() && !this.m_ProjBinder.isNull()) {
  153.             byte var1 = this.m_ProjBinder.getByte();
  154.             if (var1 == 71) {
  155.                var2 = 0;
  156.             }
  157.  
  158.             this.m_BinderInputStream = this.m_ProjBinder.getBinaryStream();
  159.          }
  160.       } catch (SQLException var5) {
  161.          if (!((Throwable)var5).getMessage().startsWith("Can't convert data")) {
  162.             System.out.println(((Throwable)var5).getMessage());
  163.          }
  164.       }
  165.  
  166.       this.m_ScreenInputStream = this.m_BinderInputStream;
  167.       if (this.m_ScreenInputStream != null) {
  168.          try {
  169.             this.buildImage(this.m_ScreenInputStream, var2);
  170.          } catch (MalformedURLException var4) {
  171.          }
  172.       }
  173.  
  174.       ((Component)this).repaint();
  175.    }
  176.  
  177.    public void clearImage() {
  178.       this.image = null;
  179.       this.m_ScreenInputStream = null;
  180.       ((Component)this).repaint();
  181.    }
  182.  
  183.    private void buildImage(InputStream var1, int var2) throws MalformedURLException {
  184.       try {
  185.          Toolkit var3 = ((Component)this).getToolkit();
  186.          StreamImageSource var4 = new StreamImageSource(var1, var2);
  187.          this.image = var3.createImage(var4);
  188.          if (!this.m_displayWhileLoading) {
  189.             this.loadImage(this.image);
  190.          }
  191.       } catch (Exception var5) {
  192.          ((Throwable)var5).printStackTrace();
  193.          throw new MalformedURLException(((Throwable)var5).getMessage());
  194.       }
  195.    }
  196.  
  197.    private void loadImage(Image var1) {
  198.       if (var1 != null) {
  199.          try {
  200.             MediaTracker var2 = new MediaTracker(this);
  201.             var2.addImage(var1, 0);
  202.             var2.waitForID(0);
  203.          } catch (InterruptedException var3) {
  204.          }
  205.       }
  206.    }
  207.  
  208.    public void notifyDataChange(ProjBinder var1) {
  209.       try {
  210.          if (var1 != null) {
  211.             this.m_ProjBinder = var1;
  212.             this.init(this.m_ProjBinder);
  213.          }
  214.       } catch (Exception var3) {
  215.          ((Throwable)var3).printStackTrace();
  216.       }
  217.    }
  218.  
  219.    public boolean notifyInputChanged(InputStream var1) {
  220.       if (this.m_ScreenInputStream == null || !this.m_ScreenInputStream.equals(var1)) {
  221.          this.m_ScreenInputStream = var1;
  222.       }
  223.  
  224.       try {
  225.          if (this.m_BinderInputStream != this.m_ScreenInputStream || this.m_BinderInputStream != null && !this.m_BinderInputStream.equals(this.m_ScreenInputStream) && this.m_ProjBinder.getRelationView().getCurrentRecordState() != 105 && this.m_ProjBinder.getRelationView().getCurrentRecordState() != 103 && this.m_ProjBinder.getRelationView().getCurrentRecordState() != 104) {
  226.             this.m_BinderInputStream = this.m_ScreenInputStream;
  227.  
  228.             try {
  229.                if (this.m_BinderInputStream == null) {
  230.                   this.m_ProjBinder.setNull(-4);
  231.                } else {
  232.                   this.m_ProjBinder.setBinaryStream(this.m_BinderInputStream, this.m_BinderInputStream.available());
  233.                }
  234.             } catch (IOException var3) {
  235.                this.raiseException("IOException from TextField.notifyInputChange: " + ((Throwable)var3).getMessage());
  236.                return false;
  237.             }
  238.          }
  239.  
  240.          return true;
  241.       } catch (SQLException var4) {
  242.          this.raiseException("SQLException from TextField.notifyInputChange: " + ((Throwable)var4).getMessage());
  243.          return false;
  244.       }
  245.    }
  246.  
  247.    public boolean notifySetData(ProjBinder var1) throws SQLException {
  248.       return this.notifyInputChanged(this.m_ScreenInputStream);
  249.    }
  250.  
  251.    public void paint(Graphics var1) {
  252.       try {
  253.          if (this.image != null) {
  254.             var1.drawImage(this.image, 0, 0, this);
  255.          } else {
  256.             var1.clearRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
  257.          }
  258.       } catch (Exception var3) {
  259.          ((Throwable)var3).printStackTrace();
  260.       }
  261.    }
  262.  
  263.    public void setDynamicUpdate(boolean var1) {
  264.       this.m_DynamicUpdate = var1;
  265.    }
  266.  
  267.    public void setTreatBlankAs(String var1) {
  268.       if ((new String(var1)).toUpperCase().equals("DEFAULT")) {
  269.          this.m_treatBlankAs = 0;
  270.       } else if ((new String(var1)).toUpperCase().equals("NULL")) {
  271.          this.m_treatBlankAs = 1;
  272.       } else {
  273.          if ((new String(var1)).toUpperCase().equals("BLANK")) {
  274.             this.m_treatBlankAs = 2;
  275.          }
  276.  
  277.       }
  278.    }
  279.  
  280.    void raiseException(String var1) {
  281.       System.out.println(var1);
  282.    }
  283. }
  284.